1. Technical Field of the Invention
The invention relates generally to communication systems; and, more particularly, it relates to decoding of communication signals within such communication systems.
2. Description of Related Art
Data communication systems have been under continual development for many years. One such type of communication system that has been of significant interest lately is a communication system that employs turbo codes. Another type of communication system that has also received interest is a communication system that employs LDPC (Low Density Parity Check) code. A primary directive in these areas of development has been to try continually to lower the error floor within a communication system. The ideal goal has been to try to reach Shannon's limit in a communication channel. Shannon's limit may be viewed as being the data rate to be used in a communication channel, having a particular SNR (Signal to Noise Ratio), that achieves error free transmission through the communication channel. In other words, the Shannon limit is the theoretical bound for channel capacity for a given modulation and code rate.
LDPC codes are oftentimes referred to in a variety of ways. For example, iterative soft decoding of LDPC codes may be implemented in a number of ways including based on the BP (Belief Propagation) algorithm, the SP (Sum-Product) algorithm, and/or the MP (Message-Passing) algorithm; the MP algorithm is sometimes referred to as a Sum Product/Belief Propagation combined algorithm. While there has been a significant amount of interest and effort directed towards these types of LDPC codes, regardless of which particular manner of iterative decoding algorithm is being employed in the specific case (3 of which are enumerated above: BP, SP, and MP), there still is ample room for improvement in the implementation and processing to be performed within a communication device to complete such decoding. For example, there are a variety of relatively complex and numerically burdensome calculations, data management and processing that must be performed to effectuate the accurate decoding of an LDPC coded signal.
A primary directive in these areas of development has been to try continually to lower the error floor within a communication system. The ideal goal has been to try to reach Shannon's limit in a communication channel. Shannon's limit may be viewed as being the data rate that is used in a communication channel, having a particular signal to noise ratio (SNR), that will achieve error free transmission through the channel. In other words, the Shannon limit is the theoretical bound for channel capacity for a given modulation and code rate.
LDPC code has been shown to provide for excellent decoding performance that can approach the Shannon limit in some cases. For example, some LDPC decoders have been shown to come within 0.3 dB from the theoretical Shannon limit. While this example was achieved using an irregular LDPC code of a length of one million, it nevertheless demonstrates the very promising application of LDPC codes within communication systems.
In performing calculations when decoding a received signal, it is common for decoders to operate in the natural log (ln) domain; LDPC decoders also fall in to this category. By operating within the natural log domain, this converts all multiplications to additions, divisions to subtractions, and eliminates exponentials entirely, without affecting BER performance.
One somewhat difficult calculation is the natural log (ln) domain includes calculating the sum of exponentials as shown below:ln(ea+eb+ec+ . . . )
This calculation can be significantly reduced in complexity using the Jacobian formula shown below:max*(a,b)=ln(ea+eb)=max(a,b)+ln(1+e−|a−b|)
This calculation is oftentimes referred to as being a max* calculation or max* operation. It is noted that the Jacobian formula simplification of the equation shown above presents the max* operation of only two variables, a and b. This calculation may be repeated over and over when trying to calculate a longer sum of exponentials. For example, to calculate ln(ea+eb+ec), the following two max* operations may be performed:max*(a,b)=ln(ea+eb)=max(a,b)+ln(1+e−|a−b|)=xmax*(a,b,c)=max* (x,c)=ln(ex+ec)=max(x,c)+ln(1+e−|x−c|)
While there has a been a great deal of development within the context of LDPC code, the extensive processing and computations required to perform decoding therein can be extremely burdensome—this one example above of the calculating the sum of exponentials illustrates the potentially complex and burdensome calculations needed when performing decoding. Sometimes the processing requirements are so burdensome that they simply prohibit their implementation within systems having very tight design budgets.
There have been some non-optimal approaches to deal with the burdensome calculations required to do such burdensome calculations. For example, in performing this basic max* operation, some decoders simply exclude the logarithmic correction factor of ln(1+e−a−b|) altogether and use only the max(a,b) result which may be implemented within a single instruction within a DSP (Digital Signal Processor). However, this will inherently introduce some degradation in decoder performance. Most of the common approaches that seek to provide some computational improvements either cut corners in terms of computational accuracy, or they do not provide a sufficient reduction in computational complexity to justify their integration. One of the prohibiting factors concerning the implementation of many LDPC codes is oftentimes the inherent computational complexity coupled with the significant amount of memory required therein.
There still exists a need in the art to provide for more efficient solutions when making calculations, such as max*, within decoders that operate within the logarithmic domain.